<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>webgl着色器</title>
    <script src="lib/webgl-debug.js"></script>
    <script src="lib/webgl-utils.js"></script>
    <script src="lib/cuon-utils.js"></script>
    <script src="lib/cuon-matrix.js"></script>
</head>

<body onload="main()">
    <canvas id="canvas" width="400" height="490"></canvas>
</body>
<script>
    // 顶点着色器伪代码
    var vShder_source = `
attribute vec4 a_Position;
void main(){
gl_Position =a_Position; //设置坐标
//gl_PointSize =10.0; //设置尺寸
}
`
        //片元着色器伪代码
    var fShder_source = `
void main(){
gl_FragColor = vec4(0.5,0.0,0.0,1.0); //设置颜色
}
`

    function main() {
        var canvas = document.getElementById('canvas');
        //  获取上下文对象
        var gl = getWebGLContext(canvas);
        //  初始化着色器
        if (!initShaders(gl, vShder_source, fShder_source)) {
            return;
        }
        //设置顶点位置
        var n = initVertexBuffers(gl);
        if (n < 0) {
            console.log("无法获取顶点相关的信息");
            return;
        }

        // 指定一个覆盖canvas的颜色
        gl.clearColor(0, 0, 0, 1.0);
        // 清除指定的缓冲区
        gl.clear(gl.COLOR_BUFFER_BIT);
        gl.drawArrays(gl.TRIANGLES, 0, n);
    }

    function initVertexBuffers(gl) {
        var verties = new Float32Array([0.0, 0.5, -0.5, -0.5, 0.5, -0.5]);
        var n = 3;

        //创建缓冲区对象
        var vertexBuffer = gl.createBuffer();
        if (!vertexBuffer) {
            console.log("创建缓冲区对象失败")
            return -1;
        }
        //将缓冲区对象绑定目标
        gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
        //向缓冲区对象写入数据
        gl.bufferData(gl.ARRAY_BUFFER, verties, gl.STATIC_DRAW);
        //获取attribute变量的储存位置
        var a_Position = gl.getAttribLocation(gl.program, "a_Position");
        if (a_Position < 0) {
            console.log("无法获取变量的储存位置");
            return -1;
        }
        //链接a_Position 变量与分配给它的缓冲区对象
        gl.vertexAttribPointer(a_Position, 2, gl.FLOAT, false, 0, 0);
        gl.enableVertexAttribArray(a_Position);
        return n;



    }
</script>

</html>